﻿using SGV.Entidad;
using SGV.Negocio;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SGV.Win32
{
    public partial class frmClienteAgregar : Form
    {
        public frmClienteAgregar()
        {
            InitializeComponent();
        }

        private void frmClienteAgregar_Load(object sender, EventArgs e)
        {
            IniciarControles();
        }

        private void SetModificarControles()
        {
            txtCodigo.Enabled = true;
            btnBuscarCliente.Enabled = true;

            txtNombre.Enabled = false;
            txtBarrio.Enabled = false;
            txtCP.Enabled = false;
            txtCuit.Enabled = false;
            txtDireccion.Enabled = false;
            txtDni.Enabled = false;
            txtEmail.Enabled = false;
            txtFechaAlta.Enabled = false;
            txtIngBrutos.Enabled = false;
            txtObservaciones.Enabled = false;
            txtTelefono.Enabled = false;
            cmbLocalidad.Enabled = false;
            cmbProvincia.Enabled = false;
            cmbTipoIva.Enabled = false;
            btnNuevaLocalidad.Enabled = false;
            btnNuevaProvincia.Enabled = false;
            btnNuevoTipoIva.Enabled = false;

            btnGrabar.Text = "Modificar";
        }

        private void IniciarControles()
        {
            this.Text = "ABM Clientes - Registro de Nuevo Cliente";

            //limpiar controles
            txtCodigo.Text = string.Empty;
            txtNombre.Text = string.Empty;
            txtBarrio.Text = string.Empty;
            txtCP.Text = string.Empty;
            txtCuit.Text = string.Empty;
            txtDireccion.Text = string.Empty;
            txtDni.Text = string.Empty;
            txtEmail.Text = string.Empty;
            txtFechaAlta.Text = string.Empty;
            txtIngBrutos.Text = string.Empty;
            txtObservaciones.Text = string.Empty;
            txtTelefono.Text = string.Empty;

            //asignar valores por defecto

            txtCodigo.Enabled = false;
            btnBuscarCliente.Enabled = false;
            txtFechaAlta.Text = DateTime.Today.Date.ToShortDateString();
            txtFechaAlta.Enabled = false;

            //cargar combobox

            CargarComboTipoIva();
            CargarComboProvincia();
            CargarComboLocalidad();
        }


        private void CargarComboTipoIva()
        {
            cmbTipoIva.DisplayMember = "denominacion";
            cmbTipoIva.ValueMember = "id";

            IList<TipoIva> datos = TipoIvas.FindAll();    
            datos.Insert(0, new TipoIva() { denominacion = "SELECCIONE..." });

            cmbTipoIva.DataSource = datos;
        }

        private void CargarComboProvincia()
        {
            cmbProvincia.DisplayMember = "nombre";
            cmbProvincia.ValueMember = "id";

            IList<Provincia> datos = Provincias.FindAll();
            datos.Insert(0, new Provincia() { nombre = "SELECCIONE..." });

            cmbProvincia.DataSource = datos;
        }

        private void CargarComboLocalidad()
        {
            cmbLocalidad.DisplayMember = "nombre";
            cmbLocalidad.ValueMember = "id";

            IList<Localidad> datos = Localidades.FindAll();
            datos.Insert(0, new Localidad() { nombre = "SELECCIONE..." });

            cmbLocalidad.DataSource = datos;
        }

        private void btnGrabar_Click(object sender, EventArgs e)
        {

            if (ValidarFormulario() == true)
            {

                Cliente cliente = new Cliente();
                cliente.barrio = txtBarrio.Text;
                cliente.cp = txtCP.Text;
                cliente.cuit = txtCuit.Text;
                cliente.direccion = txtDireccion.Text;
                cliente.dni = txtDni.Text;
                cliente.email = txtEmail.Text;
                cliente.fechaalta = Convert.ToDateTime(txtFechaAlta.Text);
                cliente.ingbrutos = txtIngBrutos.Text;
                cliente.localidad = (Localidad)cmbLocalidad.SelectedItem;
                cliente.nombreapellido = txtNombre.Text;
                cliente.observaciones = txtObservaciones.Text;
                cliente.telefono = txtTelefono.Text;
                cliente.tipoiva = (TipoIva)cmbTipoIva.SelectedItem;
                cliente.provincia = (Provincia)cmbProvincia.SelectedItem;

                try
                {
                    int id = Clientes.add(cliente);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }
        }


        private Boolean ValidarFormulario()
        {
            bool resultado = true;
            _error.Clear();

            if(string.IsNullOrEmpty(txtNombre.Text))
            {
                resultado = false;
                _error.SetError(txtNombre, "Debe completar el Nombre y Apellido.");
            }

            if (string.IsNullOrEmpty(txtDni.Text))
            {
                resultado = false;
                _error.SetError(txtDni, "Debe completar el D.N.I.");
            }

            if (string.IsNullOrEmpty(txtDireccion.Text))
            {
                resultado = false;
                _error.SetError(txtDireccion, "Debe completar la Dirección.");
            }

            if (string.IsNullOrEmpty(txtBarrio.Text))
            {
                resultado = false;
                _error.SetError(txtBarrio, "Debe completar el Barrio.");
            }

            if (cmbProvincia.SelectedIndex == 0)
            {
                resultado = false;
                _error.SetError(btnNuevaProvincia, "Debe seleccionar la Provincia.");
            }

            if (cmbLocalidad.SelectedIndex == 0)
            {
                resultado = false;
                _error.SetError(btnNuevaLocalidad, "Debe seleccionar la Localidad.");
            }

            if (cmbTipoIva.SelectedIndex == 0)
            {
                resultado = false;
                _error.SetError(btnNuevoTipoIva, "Debe seleccionar la Condición de I.V.A.");
            }

            if (string.IsNullOrEmpty(txtCP.Text))
            {
                resultado = false;
                _error.SetError(txtCP, "Debe completar el Código Postal.");
            }

            if (string.IsNullOrEmpty(txtTelefono.Text))
            {
                resultado = false;
                _error.SetError(txtTelefono, "Debe completar el Teléfono.");
            }

            if (string.IsNullOrEmpty(txtEmail.Text))
            {
                resultado = false;
                _error.SetError(txtEmail, "Debe completar el Email.");
            }

            if (string.IsNullOrEmpty(txtCuit.Text))
            {
                resultado = false;
                _error.SetError(txtCuit, "Debe completar el N° de C.U.I.T.");
            }

            if (string.IsNullOrEmpty(txtIngBrutos.Text))
            {
                resultado = false;
                _error.SetError(txtIngBrutos, "Debe completar el N° de Ingresos Brutos.");
            }

            return resultado;
        }

        private void btnModificarCliente_Click(object sender, EventArgs e)
        {
            SetModificarControles();
        }

       

    }
}
